在有些VC工程中,包含一些为了优化寄存器而用汇编写的asm文件,假设有一个文件名叫XXX.asm,那么怎么编译这个XXX.asm文件为XXX.o文件呢?以VC6.0为例,在VC6.0的工程设置里有一个选项卡叫做Custom Build,选中要左边文件树里要编译的XXX.asm,在右边的Commands下的编辑框里输入
$(masm_dir)/ml /c /Cp /coff /Fo$(OUTDIR)/$(InputName).obj /Zm /Zi $(InputPath)
(这里的masm_dir是环境变量,表示masm安装的路径,如果用其他类型的汇编编译器,需要根据其编译选项作相应的修改)
在右边的Outputs下的编译框里输入
$(OUTDIR)/$(InputName).obj
这样就可以了。
Project->Settings...->
打开“Project Settings”对话框
->选择C/C++页
“Category”中选择“Listing Files”
在“Listing file type”中选择“Assembly,Machine Code,and Source”
“OK”后重新编译
clean all
在VC6中编译ASM文件,需要安装VCPP5
但是打了SP6的可能装不上这个,可以到注册表里
HKLM\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks子键下
把
latest DWORD值 00000006
改为
latest DWORD值 00000005就可以安装了
也可以直接解包把里面的ml.exe ml.err 文件手工复制到vc98\bin目录里
========================
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks]
"sp6"=""
"latest"=dword:00000005
========================
将 asm文件加入到工程里时,要设置工程中该文件的Custom Build属性
Commands:
ml /c /coff /Fo $(OutDir)\$(TargetName) $(InputPath)
Outputs:
$(OutDir)\$(TargetName).obj
完毕。
1. 创建项目:
2. 右键点击项目名进行自定义配置
3.选择masm编译器:
4. 添加文件,需要修改文件后缀名。这里需要注意不能在前几步创建文件,不然后续“配置属性”设置中会缺少Microsoft Macro Assembler。
5. helloworld代码如下:
6. 环境配置。因为上述代码中使用了外部函数库,所以需要包含额外的文件。选择“项目”中的属性:
7. 为了包含以下的库文件:(这些库文件来自http://www.kipirvine.com)
需要增加附加库相关的配置(注意下面第二张图中添加库时一定要带后缀.lib):
8. 选择子系统:
9. 之后可以进行编译了:
10. 执行的结果如下:
为了高亮汇编语法,将下面的文件放到D:\ProgramFiles (x86)\Microsoft Visual Studio 11.0\Common7\IDE目录中。
然后进行如下的配置即可(工具->选项):
由于文本编辑器对汇编语法的支持问题,会显示不少错误(红色波浪线),可以通过下面的配置消除:
另外可以在c/c++语言中直接插入汇编,VS中可以使用__asm伪指令:
执行的结果如下:
PS1:本文参考自Irvine的《Intel汇编语言程序设计》及对应的网站。该书是很好的汇编入门教程。
PS2:以上例子中使用的VS版本为VS2012,使用的系统是Win8。
本页共54段,2158个字符,3548 Byte(字节)